login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Navigatie systemen > [class]Menusysteem met <ul> generatie

[class]Menusysteem met <ul> generatie

Auteur: Rubdos - 11 december 2008 - 12:02 - Gekeurd door: Gerard - Hits: 3461 - Aantal punten: 3.00 (2 stemmen)





Deze class genereert een menu met oneindig veel subitems. Voorbeeld:

  1. include("class.menu.php");
  2. $menu = new menu;
  3. $id = $menu->addItem($naam,$url,$parent=-1);
  4. $menu->addItem($naam2,$url2,$id);
  5. $menu->writeHtml;


Nu bevat $id 0, omdat dat de eerste id is die wordt toegekend. het 2e item wordt dus onder het eerste gezet (subitem):
  1. <ul>
  2. <li>$naam
  3. <ul>
  4. <li>$naam2</li>
  5. </ul>
  6. </li>
  7. </ul>

functies:
integer addItem($name,[$url [,$parent]]);
boolean hasSubItems($id);
string getHtmlOfSubItems($subitems);
writeHtml

Versie 1.1:
Wanneer geklikt op een item, wordt aan die link de class "selected" toegewezen. Url is niet meer verplicht.

Code:
De Class:
  1. <?php
  2. class menu {
  3. var $menuitems;
  4. function addItem($name,$url="?",$parent = -1){
  5. $this->menuitems[] = array("parent" => $parent,"url" => $url,"name" => $name);
  6. return count($this->menuitems)-1;
  7. }
  8. function hasSubItems($item){
  9. $result=false;
  10. $menuitems=$this->menuitems;
  11. foreach($menuitems as $key => $value){
  12. if($value['parent']==$item){
  13. $result=true;
  14. }
  15. }
  16. return $result;
  17. }
  18. function getHtmlOfSubItems($subitem){
  19. $key=0;
  20. $menuitems=$this->menuitems;
  21. foreach($menuitems as $key => $value){
  22. if($value['parent'] == $subitem){
  23. if($_GET['ItemId'] == $key){
  24. $class = "class=\"selected\"";
  25. }else{$class="";}
  26. $returnhtml.= "<li><a $class href=\"".$value['url']."&ItemId=".$key."\">".$value['name']."</a>";
  27. if($this->hasSubItems($key)){
  28. $returnhtml.="<ul>\r\n";
  29. $result = $this->getHtmlOfSubItems($key);
  30. $returnhtml .= $result;
  31. $returnhtml.="</ul>\r\n";
  32. }
  33. $returnhtml.= "</li>";
  34. }
  35. }
  36. return $returnhtml;
  37. }
  38. function writeHtml(){
  39. $html= "<ul>";
  40. $html.= $this->getHtmlOfSubItems(-1);
  41. $html.= "</ul>";
  42. echo $html;
  43. }
  44. }
  45. /* ---voorbeeldje---
  46. $menu = new menu;
  47. $menu->addItem("Home","?");
  48. $menu->addItem("Links","?option=twee");
  49. $menu->writeHtml();
  50. */
  51. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (2)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.032s